<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // 解构：解析构造


        // var a = 1 ;
        // var b = 2 ;
        // var c = 3 ;

        // 声明变量的时候，对数组一一解构
        // var [a , b , c] = [1 , 2 , 3] ;
        // console.log(c);


        // var [a,c] = [1,,,,,4] ;
        // console.log(a , c);


        // var [a , c] = [1,[2,3]] ;
        // console.log(c);  // [2,3]


        // var [a , [,c]] = [1,[2,3]] ;
        // console.log(c);


        // var a = 1 ;
        // var b = 2 ;
        // // 交换a和b的值
        // [a,b] = [b,a] ;

        // console.log(a , b);


        // 解构对象
        const person = {
            name : '小花' , 
            age : 17 ,
            say : function() {
                console.log(this.name);
            }
        }


        // 想声明一个变量  name   小花
        //                age    17


        // const  {name , age} = {
        //     name : '小花' , 
        //     age : 17 ,
        //     say : function() {
        //         console.log(this.name);
        //     }
        // }

        // const  {name , age} = person ;
        

        // console.log(name);   // 只是一个变量

        // console.log(person.name);   // 对象的属性



        // 想声明一个变量  username   小花
        //                userage    17



        // 对象具有无序性
        // const {username , userage} = person ;    // 错误的

        // console.log(username);


        // 当变量名和属性名不相同的时候
        //     属性    变量名
        const {age : userage , name : username } = person ;
        console.log(username , userage);



        // const goods = {
        //     id : 1 ,
        //     name : '华为手机',
        //     price : '9999'
        // } ;


        // 声明了变量  值与对象的属性值相等  

        // const {id , name , price} = goods ;

        // console.log(name);



        const goods = {
            id : 1 ,
            name : '华为手机',
            price : {
                yuanJia : '9999' ,
                zheHouJia : '99'
            }
        } ;


        // 想拿到名字和折后价  

        // 对象嵌套对象时，解构必须带上属性
        const {name , price : {zheHouJia , yuanJia}} = goods ;

        console.log(zheHouJia);

        console.log(yuanJia);


        

    </script>
    
</body>
</html>